/**
 * Copyright (c) 2000-2012 Liferay, Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 */

package slcu.service;

import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.io.unsync.UnsyncByteArrayInputStream;
import com.liferay.portal.kernel.io.unsync.UnsyncByteArrayOutputStream;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.util.ClassLoaderObjectInputStream;
import com.liferay.portal.kernel.util.PropsUtil;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.model.BaseModel;

import slcu.model.AlumnoClp;
import slcu.model.CategoriaDisciplinaClp;
import slcu.model.ConfiguracionClp;
import slcu.model.CoordinadorClp;
import slcu.model.DeportistaClp;
import slcu.model.DirectorClp;
import slcu.model.DisciplinaClp;
import slcu.model.EquipoClp;
import slcu.model.EscuelaClp;
import slcu.model.InscripcionClp;
import slcu.model.InscripcionDisciplinaClp;
import slcu.model.InscripcionMensajeClp;
import slcu.model.NotificacionRechazoClp;
import slcu.model.PartidoClp;
import slcu.model.PersonalDelMinisterioClp;
import slcu.model.ProfesorClp;
import slcu.model.PruebaDisciplinaClp;
import slcu.model.PruebaInscripcionClp;
import slcu.model.PuntajeClp;
import slcu.model.SolicitudAltaAlumnoClp;
import slcu.model.SolicitudAltaAlumnoMailDestinoClp;

import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import java.lang.reflect.Method;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Brian Wing Shun Chan
 */
public class ClpSerializer {
	public static String getServletContextName() {
		if (Validator.isNotNull(_servletContextName)) {
			return _servletContextName;
		}

		synchronized (ClpSerializer.class) {
			if (Validator.isNotNull(_servletContextName)) {
				return _servletContextName;
			}

			try {
				ClassLoader classLoader = ClpSerializer.class.getClassLoader();

				Class<?> portletPropsClass = classLoader.loadClass(
						"com.liferay.util.portlet.PortletProps");

				Method getMethod = portletPropsClass.getMethod("get",
						new Class<?>[] { String.class });

				String portletPropsServletContextName = (String)getMethod.invoke(null,
						"slcu-inscripciones-portlet-deployment-context");

				if (Validator.isNotNull(portletPropsServletContextName)) {
					_servletContextName = portletPropsServletContextName;
				}
			}
			catch (Throwable t) {
				if (_log.isInfoEnabled()) {
					_log.info(
						"Unable to locate deployment context from portlet properties");
				}
			}

			if (Validator.isNull(_servletContextName)) {
				try {
					String propsUtilServletContextName = PropsUtil.get(
							"slcu-inscripciones-portlet-deployment-context");

					if (Validator.isNotNull(propsUtilServletContextName)) {
						_servletContextName = propsUtilServletContextName;
					}
				}
				catch (Throwable t) {
					if (_log.isInfoEnabled()) {
						_log.info(
							"Unable to locate deployment context from portal properties");
					}
				}
			}

			if (Validator.isNull(_servletContextName)) {
				_servletContextName = "slcu-inscripciones-portlet";
			}

			return _servletContextName;
		}
	}

	public static Object translateInput(BaseModel<?> oldModel) {
		Class<?> oldModelClass = oldModel.getClass();

		String oldModelClassName = oldModelClass.getName();

		if (oldModelClassName.equals(AlumnoClp.class.getName())) {
			return translateInputAlumno(oldModel);
		}

		if (oldModelClassName.equals(CategoriaDisciplinaClp.class.getName())) {
			return translateInputCategoriaDisciplina(oldModel);
		}

		if (oldModelClassName.equals(ConfiguracionClp.class.getName())) {
			return translateInputConfiguracion(oldModel);
		}

		if (oldModelClassName.equals(CoordinadorClp.class.getName())) {
			return translateInputCoordinador(oldModel);
		}

		if (oldModelClassName.equals(DeportistaClp.class.getName())) {
			return translateInputDeportista(oldModel);
		}

		if (oldModelClassName.equals(DirectorClp.class.getName())) {
			return translateInputDirector(oldModel);
		}

		if (oldModelClassName.equals(DisciplinaClp.class.getName())) {
			return translateInputDisciplina(oldModel);
		}

		if (oldModelClassName.equals(EquipoClp.class.getName())) {
			return translateInputEquipo(oldModel);
		}

		if (oldModelClassName.equals(EscuelaClp.class.getName())) {
			return translateInputEscuela(oldModel);
		}

		if (oldModelClassName.equals(InscripcionClp.class.getName())) {
			return translateInputInscripcion(oldModel);
		}

		if (oldModelClassName.equals(InscripcionDisciplinaClp.class.getName())) {
			return translateInputInscripcionDisciplina(oldModel);
		}

		if (oldModelClassName.equals(InscripcionMensajeClp.class.getName())) {
			return translateInputInscripcionMensaje(oldModel);
		}

		if (oldModelClassName.equals(NotificacionRechazoClp.class.getName())) {
			return translateInputNotificacionRechazo(oldModel);
		}

		if (oldModelClassName.equals(PartidoClp.class.getName())) {
			return translateInputPartido(oldModel);
		}

		if (oldModelClassName.equals(PersonalDelMinisterioClp.class.getName())) {
			return translateInputPersonalDelMinisterio(oldModel);
		}

		if (oldModelClassName.equals(ProfesorClp.class.getName())) {
			return translateInputProfesor(oldModel);
		}

		if (oldModelClassName.equals(PruebaDisciplinaClp.class.getName())) {
			return translateInputPruebaDisciplina(oldModel);
		}

		if (oldModelClassName.equals(PruebaInscripcionClp.class.getName())) {
			return translateInputPruebaInscripcion(oldModel);
		}

		if (oldModelClassName.equals(PuntajeClp.class.getName())) {
			return translateInputPuntaje(oldModel);
		}

		if (oldModelClassName.equals(SolicitudAltaAlumnoClp.class.getName())) {
			return translateInputSolicitudAltaAlumno(oldModel);
		}

		if (oldModelClassName.equals(
					SolicitudAltaAlumnoMailDestinoClp.class.getName())) {
			return translateInputSolicitudAltaAlumnoMailDestino(oldModel);
		}

		return oldModel;
	}

	public static Object translateInput(List<Object> oldList) {
		List<Object> newList = new ArrayList<Object>(oldList.size());

		for (int i = 0; i < oldList.size(); i++) {
			Object curObj = oldList.get(i);

			newList.add(translateInput(curObj));
		}

		return newList;
	}

	public static Object translateInputAlumno(BaseModel<?> oldModel) {
		AlumnoClp oldClpModel = (AlumnoClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getAlumnoRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInputCategoriaDisciplina(
		BaseModel<?> oldModel) {
		CategoriaDisciplinaClp oldClpModel = (CategoriaDisciplinaClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getCategoriaDisciplinaRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInputConfiguracion(BaseModel<?> oldModel) {
		ConfiguracionClp oldClpModel = (ConfiguracionClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getConfiguracionRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInputCoordinador(BaseModel<?> oldModel) {
		CoordinadorClp oldClpModel = (CoordinadorClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getCoordinadorRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInputDeportista(BaseModel<?> oldModel) {
		DeportistaClp oldClpModel = (DeportistaClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getDeportistaRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInputDirector(BaseModel<?> oldModel) {
		DirectorClp oldClpModel = (DirectorClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getDirectorRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInputDisciplina(BaseModel<?> oldModel) {
		DisciplinaClp oldClpModel = (DisciplinaClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getDisciplinaRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInputEquipo(BaseModel<?> oldModel) {
		EquipoClp oldClpModel = (EquipoClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getEquipoRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInputEscuela(BaseModel<?> oldModel) {
		EscuelaClp oldClpModel = (EscuelaClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getEscuelaRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInputInscripcion(BaseModel<?> oldModel) {
		InscripcionClp oldClpModel = (InscripcionClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getInscripcionRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInputInscripcionDisciplina(
		BaseModel<?> oldModel) {
		InscripcionDisciplinaClp oldClpModel = (InscripcionDisciplinaClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getInscripcionDisciplinaRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInputInscripcionMensaje(BaseModel<?> oldModel) {
		InscripcionMensajeClp oldClpModel = (InscripcionMensajeClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getInscripcionMensajeRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInputNotificacionRechazo(
		BaseModel<?> oldModel) {
		NotificacionRechazoClp oldClpModel = (NotificacionRechazoClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getNotificacionRechazoRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInputPartido(BaseModel<?> oldModel) {
		PartidoClp oldClpModel = (PartidoClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getPartidoRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInputPersonalDelMinisterio(
		BaseModel<?> oldModel) {
		PersonalDelMinisterioClp oldClpModel = (PersonalDelMinisterioClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getPersonalDelMinisterioRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInputProfesor(BaseModel<?> oldModel) {
		ProfesorClp oldClpModel = (ProfesorClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getProfesorRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInputPruebaDisciplina(BaseModel<?> oldModel) {
		PruebaDisciplinaClp oldClpModel = (PruebaDisciplinaClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getPruebaDisciplinaRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInputPruebaInscripcion(BaseModel<?> oldModel) {
		PruebaInscripcionClp oldClpModel = (PruebaInscripcionClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getPruebaInscripcionRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInputPuntaje(BaseModel<?> oldModel) {
		PuntajeClp oldClpModel = (PuntajeClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getPuntajeRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInputSolicitudAltaAlumno(
		BaseModel<?> oldModel) {
		SolicitudAltaAlumnoClp oldClpModel = (SolicitudAltaAlumnoClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getSolicitudAltaAlumnoRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInputSolicitudAltaAlumnoMailDestino(
		BaseModel<?> oldModel) {
		SolicitudAltaAlumnoMailDestinoClp oldClpModel = (SolicitudAltaAlumnoMailDestinoClp)oldModel;

		BaseModel<?> newModel = oldClpModel.getSolicitudAltaAlumnoMailDestinoRemoteModel();

		newModel.setModelAttributes(oldClpModel.getModelAttributes());

		return newModel;
	}

	public static Object translateInput(Object obj) {
		if (obj instanceof BaseModel<?>) {
			return translateInput((BaseModel<?>)obj);
		}
		else if (obj instanceof List<?>) {
			return translateInput((List<Object>)obj);
		}
		else {
			return obj;
		}
	}

	public static Object translateOutput(BaseModel<?> oldModel) {
		Class<?> oldModelClass = oldModel.getClass();

		String oldModelClassName = oldModelClass.getName();

		if (oldModelClassName.equals("slcu.model.impl.AlumnoImpl")) {
			return translateOutputAlumno(oldModel);
		}

		if (oldModelClassName.equals("slcu.model.impl.CategoriaDisciplinaImpl")) {
			return translateOutputCategoriaDisciplina(oldModel);
		}

		if (oldModelClassName.equals("slcu.model.impl.ConfiguracionImpl")) {
			return translateOutputConfiguracion(oldModel);
		}

		if (oldModelClassName.equals("slcu.model.impl.CoordinadorImpl")) {
			return translateOutputCoordinador(oldModel);
		}

		if (oldModelClassName.equals("slcu.model.impl.DeportistaImpl")) {
			return translateOutputDeportista(oldModel);
		}

		if (oldModelClassName.equals("slcu.model.impl.DirectorImpl")) {
			return translateOutputDirector(oldModel);
		}

		if (oldModelClassName.equals("slcu.model.impl.DisciplinaImpl")) {
			return translateOutputDisciplina(oldModel);
		}

		if (oldModelClassName.equals("slcu.model.impl.EquipoImpl")) {
			return translateOutputEquipo(oldModel);
		}

		if (oldModelClassName.equals("slcu.model.impl.EscuelaImpl")) {
			return translateOutputEscuela(oldModel);
		}

		if (oldModelClassName.equals("slcu.model.impl.InscripcionImpl")) {
			return translateOutputInscripcion(oldModel);
		}

		if (oldModelClassName.equals(
					"slcu.model.impl.InscripcionDisciplinaImpl")) {
			return translateOutputInscripcionDisciplina(oldModel);
		}

		if (oldModelClassName.equals("slcu.model.impl.InscripcionMensajeImpl")) {
			return translateOutputInscripcionMensaje(oldModel);
		}

		if (oldModelClassName.equals("slcu.model.impl.NotificacionRechazoImpl")) {
			return translateOutputNotificacionRechazo(oldModel);
		}

		if (oldModelClassName.equals("slcu.model.impl.PartidoImpl")) {
			return translateOutputPartido(oldModel);
		}

		if (oldModelClassName.equals(
					"slcu.model.impl.PersonalDelMinisterioImpl")) {
			return translateOutputPersonalDelMinisterio(oldModel);
		}

		if (oldModelClassName.equals("slcu.model.impl.ProfesorImpl")) {
			return translateOutputProfesor(oldModel);
		}

		if (oldModelClassName.equals("slcu.model.impl.PruebaDisciplinaImpl")) {
			return translateOutputPruebaDisciplina(oldModel);
		}

		if (oldModelClassName.equals("slcu.model.impl.PruebaInscripcionImpl")) {
			return translateOutputPruebaInscripcion(oldModel);
		}

		if (oldModelClassName.equals("slcu.model.impl.PuntajeImpl")) {
			return translateOutputPuntaje(oldModel);
		}

		if (oldModelClassName.equals("slcu.model.impl.SolicitudAltaAlumnoImpl")) {
			return translateOutputSolicitudAltaAlumno(oldModel);
		}

		if (oldModelClassName.equals(
					"slcu.model.impl.SolicitudAltaAlumnoMailDestinoImpl")) {
			return translateOutputSolicitudAltaAlumnoMailDestino(oldModel);
		}

		return oldModel;
	}

	public static Object translateOutput(List<Object> oldList) {
		List<Object> newList = new ArrayList<Object>(oldList.size());

		for (int i = 0; i < oldList.size(); i++) {
			Object curObj = oldList.get(i);

			newList.add(translateOutput(curObj));
		}

		return newList;
	}

	public static Object translateOutput(Object obj) {
		if (obj instanceof BaseModel<?>) {
			return translateOutput((BaseModel<?>)obj);
		}
		else if (obj instanceof List<?>) {
			return translateOutput((List<Object>)obj);
		}
		else {
			return obj;
		}
	}

	public static Throwable translateThrowable(Throwable throwable) {
		if (_useReflectionToTranslateThrowable) {
			try {
				UnsyncByteArrayOutputStream unsyncByteArrayOutputStream = new UnsyncByteArrayOutputStream();
				ObjectOutputStream objectOutputStream = new ObjectOutputStream(unsyncByteArrayOutputStream);

				objectOutputStream.writeObject(throwable);

				objectOutputStream.flush();
				objectOutputStream.close();

				UnsyncByteArrayInputStream unsyncByteArrayInputStream = new UnsyncByteArrayInputStream(unsyncByteArrayOutputStream.unsafeGetByteArray(),
						0, unsyncByteArrayOutputStream.size());

				Thread currentThread = Thread.currentThread();

				ClassLoader contextClassLoader = currentThread.getContextClassLoader();

				ObjectInputStream objectInputStream = new ClassLoaderObjectInputStream(unsyncByteArrayInputStream,
						contextClassLoader);

				throwable = (Throwable)objectInputStream.readObject();

				objectInputStream.close();

				return throwable;
			}
			catch (SecurityException se) {
				if (_log.isInfoEnabled()) {
					_log.info("Do not use reflection to translate throwable");
				}

				_useReflectionToTranslateThrowable = false;
			}
			catch (Throwable throwable2) {
				_log.error(throwable2, throwable2);

				return throwable2;
			}
		}

		Class<?> clazz = throwable.getClass();

		String className = clazz.getName();

		if (className.equals(PortalException.class.getName())) {
			return new PortalException();
		}

		if (className.equals(SystemException.class.getName())) {
			return new SystemException();
		}

		if (className.equals("slcu.DeportistaAlreadyEnabledException")) {
			return new slcu.DeportistaAlreadyEnabledException();
		}

		if (className.equals("slcu.DeportistaAlreadyRegisteredException")) {
			return new slcu.DeportistaAlreadyRegisteredException();
		}

		if (className.equals("slcu.NoSuchAlumnoException")) {
			return new slcu.NoSuchAlumnoException();
		}

		if (className.equals("slcu.NoSuchCategoriaDisciplinaException")) {
			return new slcu.NoSuchCategoriaDisciplinaException();
		}

		if (className.equals("slcu.NoSuchConfiguracionException")) {
			return new slcu.NoSuchConfiguracionException();
		}

		if (className.equals("slcu.NoSuchCoordinadorException")) {
			return new slcu.NoSuchCoordinadorException();
		}

		if (className.equals("slcu.NoSuchDeportistaException")) {
			return new slcu.NoSuchDeportistaException();
		}

		if (className.equals("slcu.NoSuchDirectorException")) {
			return new slcu.NoSuchDirectorException();
		}

		if (className.equals("slcu.NoSuchDisciplinaException")) {
			return new slcu.NoSuchDisciplinaException();
		}

		if (className.equals("slcu.NoSuchEquipoException")) {
			return new slcu.NoSuchEquipoException();
		}

		if (className.equals("slcu.NoSuchEscuelaException")) {
			return new slcu.NoSuchEscuelaException();
		}

		if (className.equals("slcu.NoSuchInscripcionException")) {
			return new slcu.NoSuchInscripcionException();
		}

		if (className.equals("slcu.NoSuchInscripcionDisciplinaException")) {
			return new slcu.NoSuchInscripcionDisciplinaException();
		}

		if (className.equals("slcu.NoSuchInscripcionMensajeException")) {
			return new slcu.NoSuchInscripcionMensajeException();
		}

		if (className.equals("slcu.NoSuchNotificacionRechazoException")) {
			return new slcu.NoSuchNotificacionRechazoException();
		}

		if (className.equals("slcu.NoSuchPartidoException")) {
			return new slcu.NoSuchPartidoException();
		}

		if (className.equals("slcu.NoSuchPersonalDelMinisterioException")) {
			return new slcu.NoSuchPersonalDelMinisterioException();
		}

		if (className.equals("slcu.NoSuchProfesorException")) {
			return new slcu.NoSuchProfesorException();
		}

		if (className.equals("slcu.NoSuchPruebaDisciplinaException")) {
			return new slcu.NoSuchPruebaDisciplinaException();
		}

		if (className.equals("slcu.NoSuchPruebaInscripcionException")) {
			return new slcu.NoSuchPruebaInscripcionException();
		}

		if (className.equals("slcu.NoSuchPuntajeException")) {
			return new slcu.NoSuchPuntajeException();
		}

		if (className.equals("slcu.NoSuchSolicitudAltaAlumnoException")) {
			return new slcu.NoSuchSolicitudAltaAlumnoException();
		}

		if (className.equals(
					"slcu.NoSuchSolicitudAltaAlumnoMailDestinoException")) {
			return new slcu.NoSuchSolicitudAltaAlumnoMailDestinoException();
		}

		return throwable;
	}

	public static Object translateOutputAlumno(BaseModel<?> oldModel) {
		AlumnoClp newModel = new AlumnoClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setAlumnoRemoteModel(oldModel);

		return newModel;
	}

	public static Object translateOutputCategoriaDisciplina(
		BaseModel<?> oldModel) {
		CategoriaDisciplinaClp newModel = new CategoriaDisciplinaClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setCategoriaDisciplinaRemoteModel(oldModel);

		return newModel;
	}

	public static Object translateOutputConfiguracion(BaseModel<?> oldModel) {
		ConfiguracionClp newModel = new ConfiguracionClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setConfiguracionRemoteModel(oldModel);

		return newModel;
	}

	public static Object translateOutputCoordinador(BaseModel<?> oldModel) {
		CoordinadorClp newModel = new CoordinadorClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setCoordinadorRemoteModel(oldModel);

		return newModel;
	}

	public static Object translateOutputDeportista(BaseModel<?> oldModel) {
		DeportistaClp newModel = new DeportistaClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setDeportistaRemoteModel(oldModel);

		return newModel;
	}

	public static Object translateOutputDirector(BaseModel<?> oldModel) {
		DirectorClp newModel = new DirectorClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setDirectorRemoteModel(oldModel);

		return newModel;
	}

	public static Object translateOutputDisciplina(BaseModel<?> oldModel) {
		DisciplinaClp newModel = new DisciplinaClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setDisciplinaRemoteModel(oldModel);

		return newModel;
	}

	public static Object translateOutputEquipo(BaseModel<?> oldModel) {
		EquipoClp newModel = new EquipoClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setEquipoRemoteModel(oldModel);

		return newModel;
	}

	public static Object translateOutputEscuela(BaseModel<?> oldModel) {
		EscuelaClp newModel = new EscuelaClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setEscuelaRemoteModel(oldModel);

		return newModel;
	}

	public static Object translateOutputInscripcion(BaseModel<?> oldModel) {
		InscripcionClp newModel = new InscripcionClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setInscripcionRemoteModel(oldModel);

		return newModel;
	}

	public static Object translateOutputInscripcionDisciplina(
		BaseModel<?> oldModel) {
		InscripcionDisciplinaClp newModel = new InscripcionDisciplinaClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setInscripcionDisciplinaRemoteModel(oldModel);

		return newModel;
	}

	public static Object translateOutputInscripcionMensaje(
		BaseModel<?> oldModel) {
		InscripcionMensajeClp newModel = new InscripcionMensajeClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setInscripcionMensajeRemoteModel(oldModel);

		return newModel;
	}

	public static Object translateOutputNotificacionRechazo(
		BaseModel<?> oldModel) {
		NotificacionRechazoClp newModel = new NotificacionRechazoClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setNotificacionRechazoRemoteModel(oldModel);

		return newModel;
	}

	public static Object translateOutputPartido(BaseModel<?> oldModel) {
		PartidoClp newModel = new PartidoClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setPartidoRemoteModel(oldModel);

		return newModel;
	}

	public static Object translateOutputPersonalDelMinisterio(
		BaseModel<?> oldModel) {
		PersonalDelMinisterioClp newModel = new PersonalDelMinisterioClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setPersonalDelMinisterioRemoteModel(oldModel);

		return newModel;
	}

	public static Object translateOutputProfesor(BaseModel<?> oldModel) {
		ProfesorClp newModel = new ProfesorClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setProfesorRemoteModel(oldModel);

		return newModel;
	}

	public static Object translateOutputPruebaDisciplina(BaseModel<?> oldModel) {
		PruebaDisciplinaClp newModel = new PruebaDisciplinaClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setPruebaDisciplinaRemoteModel(oldModel);

		return newModel;
	}

	public static Object translateOutputPruebaInscripcion(BaseModel<?> oldModel) {
		PruebaInscripcionClp newModel = new PruebaInscripcionClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setPruebaInscripcionRemoteModel(oldModel);

		return newModel;
	}

	public static Object translateOutputPuntaje(BaseModel<?> oldModel) {
		PuntajeClp newModel = new PuntajeClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setPuntajeRemoteModel(oldModel);

		return newModel;
	}

	public static Object translateOutputSolicitudAltaAlumno(
		BaseModel<?> oldModel) {
		SolicitudAltaAlumnoClp newModel = new SolicitudAltaAlumnoClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setSolicitudAltaAlumnoRemoteModel(oldModel);

		return newModel;
	}

	public static Object translateOutputSolicitudAltaAlumnoMailDestino(
		BaseModel<?> oldModel) {
		SolicitudAltaAlumnoMailDestinoClp newModel = new SolicitudAltaAlumnoMailDestinoClp();

		newModel.setModelAttributes(oldModel.getModelAttributes());

		newModel.setSolicitudAltaAlumnoMailDestinoRemoteModel(oldModel);

		return newModel;
	}

	private static Log _log = LogFactoryUtil.getLog(ClpSerializer.class);
	private static String _servletContextName;
	private static boolean _useReflectionToTranslateThrowable = true;
}